package com.cxhc.system.mapper.app;

import com.cxhc.system.domain.app.SysUserEnterprise;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 用户角色企业Mapper接口
 * 
 * @author Dhq
 * @date 2024-08-14
 */
public interface SysUserEnterpriseMapper 
{
    /**
     * 查询用户角色企业
     * 
     * @param ID 用户角色企业主键
     * @return 用户角色企业
     */
    public SysUserEnterprise selectSysUserEnterpriseByID(Long ID);


    SysUserEnterprise selectSysUserEnterpriseByUserId(Long userId);

    /**
     * 查询用户角色企业列表
     * 
     * @param sysUserEnterprise 用户角色企业
     * @return 用户角色企业集合
     */
    public List<SysUserEnterprise> selectSysUserEnterpriseList(SysUserEnterprise sysUserEnterprise);

    /**
     * 新增用户角色企业
     * 
     * @param sysUserEnterprise 用户角色企业
     * @return 结果
     */
    public int insertSysUserEnterprise(SysUserEnterprise sysUserEnterprise);

    /**
     * 修改用户角色企业
     * 
     * @param sysUserEnterprise 用户角色企业
     * @return 结果
     */
    public int updateSysUserEnterprise(SysUserEnterprise sysUserEnterprise);

    /**
     * 删除用户角色企业
     *
     * @param ID 用户角色企业主键
     * @return 结果
     */
    public int deleteSysUserEnterpriseByID(Long ID);

    /**
     * 按用户Id计数
     * 
     * @param userId 用户角色企业主键
     * @return 结果
     */
    public int countByUserId(@Param("userId") Long userId);

    /**
     * 删除用户角色企业
     *
     * @param userId 用户角色企业主键
     * @param entId 用户角色企业主键
     * @return 结果
     */
    public int deleteByUserIdAndEntId(@Param("userId") Long userId, @Param("entId")Long entId);

    /**
     * 批量删除用户角色企业
     * 
     * @param IDs 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysUserEnterpriseByIDs(Long[] IDs);

    /**
     * 统计企业用户
     *
     * @return 企业用户
     */
    int countEnt(@Param("id")String id);

    /**
     * 统计企业用户
     *
     * @return 企业用户
     */
    int countUser(@Param("id")String id);

    /**
     * 统计企业用户
     *
     * @param id 时间
     * @return 企业用户
     */
    List<Map<String,Object>> countEntByType(@Param("id")String id);

    /**
     * 统计企业用户
     *
     * @param id 时间
     * @return 企业用户
     */
    @MapKey("entId")
    Map<String,Map<String,String>> queryUserCountForArea(@Param("id")String id);

}
